package me.itsoo.artemis.framework.ioc.factory;

import me.itsoo.artemis.framework.ioc.bean.BeanDefinition;

import java.util.Set;

/**
 * BeanDefinitionRegistry
 *
 * @author zxy
 * @version 0.0.1
 * @since 2023/6/5
 */
public interface BeanDefinitionRegistry {

    /**
     * 注册 BeanDefinition
     *
     * @param beanName  String
     * @param beanClass Class
     */
    void registerBeanDefinition(String beanName, Class<?> beanClass);

    /**
     * 移除 BeanDefinition
     *
     * @param beanName String
     */
    void removeBeanDefinition(String beanName);

    /**
     * 获取 BeanDefinition
     *
     * @param beanName String
     * @return BeanDefinition
     */
    BeanDefinition getBeanDefinition(String beanName);

    /**
     * 获取全部 BeanDefinition 集合
     *
     * @return Set
     */
    Set<BeanDefinition> getAllBeanDefinitions();

}
